package cn.com.dycc.sys_manage.deptsysmanagement.service;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import cn.com.dycc.sys_manage.deptsysmanagement.entity.Dept;
import cn.com.dycc.sys_manage.deptsysmanagement.entity.DeptResult;
import cn.com.dycc.sys_manage.rolesysmanagement.service.RoleNotFoundException;



/**
 * 单位/部门管理业务层接口
 * Description: 
 * Author: linfangan
 * Version: 1.0
 * Create Date Time: 2017年8月15日 上午11:27:51.
 * Update Date Time: 
 * @see
 */
public interface DeptService {
	
//	/**
//	 * 增加单位/部门信息
//	 * @param dept 单位/部门信息  userId登录人员id
//	 * @return 单位/部门信息
//	 * @throws DeptNotFoundException
//	 */
//	public Dept addDept(Dept dept,List<Integer> bindRoleNo)throws DeptNotFoundException,RoleNotFoundException;
	
	/**
	 * 查询所有的单位/部门信息//树状 管理员显示
	 * @param org_id 组织标识
	 * @param dept_flag   0 业主单位   1 监理单位
	 * @param send_dept_id 单位树默认选中id
	 * @return
	 * @throws DeptNotFoundException
	 * @throws RoleNotFoundException
	 */
	public List<Object> findAllDept(String org_id,String send_dept_id) throws DeptNotFoundException,RoleNotFoundException;
	
	/**
	 * 根据id更新单位/部门信息 增加部门
	 * @param dept 更新的信息
	 * @return 更新后的单位/部门信息
	 * @throws DeptNotFoundException
	 */
	public String updateDept(Dept dept)throws DeptNotFoundException,RoleNotFoundException;
	
	/**
	 * 根据id查找单位/部门信息
	 * @param deptNo 单位/部门id
	 * @param userId 登录人员id
	 * @return 单位/部门信息
	 * @throws DeptNotFoundException
	 */
	public DeptResult findAllInfoByDeptNo(HttpServletRequest request,String dept_no)throws DeptNotFoundException,RoleNotFoundException;
	
//	/**
//	 * 根据id数组删除单位/部门信息
//	 * @param deptNo 单位/部门id
//	 * @param userId 登录人员id
//	 * @return
//	 * @throws DeptNotFoundException
//	 */
//	public String deleteDeptsByIds(String... ids)throws DeptNotFoundException,RoleNotFoundException;
	
//	/**
//	 * 批量插入单位/部门细信息
//	 * @param listDept
//	 * @param bindRoleNo
//	 * @return
//	 * @throws DeptNotFoundException
//	 * @throws RoleNotFoundException
//	 */
//	public List<Dept> insertBatchDept(List<Dept> listDept,List<Integer> bindRoleNo)throws DeptNotFoundException,RoleNotFoundException;
	
//	/**
//	 * 查询所有单位/部门信息
//	 * @param bindRoleNo
//	 * @return
//	 * @throws DeptNotFoundException
//	 * @throws RoleNotFoundException
//	 */
//	public List<Dept> findAll(List<Integer> bindRoleNo,Integer bindTop_dept_no)throws DeptNotFoundException,RoleNotFoundException;
	
	/**
	 * 根据id删除 部门/单位
	 * @param dept_no 单位id
	 * @param bindRoleNo
	 * @return
	 * @throws DeptNotFoundException
	 * @throws RoleNotFoundException
	 */
	public String deleteDeptByDeptNo(HttpServletRequest request,String dept_no)throws DeptNotFoundException,RoleNotFoundException;
	
//	/**
//	 * 查询id最大值
//	 * @return
//	 */
//	public int findMaxId();
//	
//	/**
//	 * 获取id
//	 * @return
//	 */
//	public int getDeptNo();
	
	/**
	 * 显示选中的单位后的部门树  管理员显示
	 * @return 单个单位下部门信息
	 * @throws DeptNotFoundException
	 */
	public List<Object> findAloneDept(HttpServletRequest request,String bindTop_dept_no,String send_dept_no) throws DeptNotFoundException,RoleNotFoundException;
	
	/**
	 * 查询所有的单位/部门信息//树状 普通用户展示
	 * @param org_id 组织标识
	 * @param dept_flag   0 业主单位   1 监理单位
	 * @param send_dept_id 单位树默认选中id
	 * @return
	 * @throws DeptNotFoundException
	 * @throws RoleNotFoundException
	 */
	public List<Object> findAllDeptOfCommonUser(String org_id,String send_dept_id) 
			throws DeptNotFoundException,RoleNotFoundException;
	
	/**
	 * 显示选中的单位后的部门树  普通用户显示
	 * @return 单个单位下部门信息
	 * @throws DeptNotFoundException
	 */
	public List<Object> findAloneCommon(HttpServletRequest request,String bindTop_dept_no,String send_dept_no) 
			throws DeptNotFoundException,RoleNotFoundException;
	
//	/**
//	 * 测试
//	 * @return
//	 */
//	public List<Object> ceshi_px(String send_dept_id);
	
	/**
	 * 20180503新建管理员显示部门
	 * send_dept_id 被选中的部门id HttpServletRequest request,
	 * @return
	 * @throws DeptNotFoundException
	 * @throws RoleNotFoundException
	 */
	public List<Object> findAllDeptNew( HttpServletRequest request,String send_dept_id)throws DeptNotFoundException,RoleNotFoundException;
	
	/**
	 * 20180503新建部门更新和部门插入
	 * @param dept
	 * @return
	 * @throws DeptNotFoundException
	 */
	public String addAndUpdate(HttpServletRequest request,Dept dept)throws DeptNotFoundException;
	
	/**
	 * 20180503新建普通用户显示部门
	 * @param org_id
	 * @param send_dept_id
	 * @return
	 * @throws DeptNotFoundException
	 * @throws RoleNotFoundException
	 */
	public List<Object> findAllDeptOfCommonUserNew(HttpServletRequest request,String send_dept_id) throws DeptNotFoundException,RoleNotFoundException;
	
	/**
	 * 20180503更新部门接口，分离增加部门
	 * @param request
	 * @param dept
	 * @return
	 * @throws DeptNotFoundException
	 */
	public String newUpdateDept(HttpServletRequest request,Dept dept)throws DeptNotFoundException;
	
	/**
	 * layui部门树
	 * @param request
	 * @param state
	 * @return
	 * @throws DeptNotFoundException
	 */
	public List<Object> layDeptTree(HttpServletRequest request,String state)throws DeptNotFoundException;

}

